#ifndef VSSHADERCREATEFACTORY_H
#define VSSHADERCREATEFACTORY_H
#include "VSMaterial.h"
#include "VSVShader.h"
#include "VSPShader.h"
#include "VSLight.h"
#include "VSResourceManager.h"
namespace VSEngine2
{

	class VSGRAPHIC_API VSShaderStringFactory
	{
	public:	

		static VSString ms_PSTextureInputCoordValue[TEXLEVEL];
		static VSString ms_PSTextureOutputColorValue;
		static VSString ms_PSColor[2];
		static VSString ms_PSInputViewZ;
		static VSString ms_PSInputLocalNormal;
		static VSString ms_PSInputLocalBinormal;
		static VSString ms_PSInputLocalTangent;
		static VSString ms_PSInputLocalPos;
		static VSString ms_PSProjLightSampler;
		static VSString ms_PSOrenNayarLookUpTableSampler;

		static VSString ms_WorldViewProjectMatrix;
		static VSString ms_WorldViewMatrix;
		static VSString ms_BoneMatrix;
		static VSString ms_WorldMatrix;
		static VSString ms_CameraWorldPos;


		static VSString ms_WorldNormal;
		static VSString ms_WorldPos;
		static VSString ms_WorldCameraDir;

		static VSString ms_LightName[VSLight::LT_MAX];

		static VSString ms_FarZ;
		static unsigned int ms_uiCreateVShaderNum;
		static unsigned int ms_uiCreatePShaderNum;

		//Create Shader


		static bool CreateVShaderString(VSVShader * pVShader,MaterialShaderPara1 &MSPara1,unsigned int uiPassType,unsigned int uiShaderID,VSString & VShaderString
#ifdef _DEBUG
			,VSString &OutShaderFileName);
#else
			);
#endif
		static bool CreatePShaderString(VSPShader * pPShader,MaterialShaderPara1 &MSPara1,unsigned int uiPassType,unsigned int uiShaderID,VSString & PShaderString
#ifdef _DEBUG
			,VSString &OutShaderFileName);
#else
			);
#endif
		

	protected:

 		static void ClearAllString();


		
	};

}
#endif